'use strict';
Object.defineProperty(exports, '__esModule', {value: true});
exports.setContentAnimate = void 0;
var version_1 = require('../common/version');
var utils_1 = require('../common/utils');

function useAnimate(context, expanded, mounted, height) {
    var selector = '.van-collapse-item__wrapper';
    if (expanded) {
        context.animate(
            selector,
            [
                {height: 0, ease: 'ease-in-out', offset: 0},
                {height: height + 'px', ease: 'ease-in-out', offset: 1},
                {height: 'auto', ease: 'ease-in-out', offset: 1},
            ],
            mounted ? 300 : 0,
            function () {
                context.clearAnimation(selector);
            }
        );
        return;
    }
    context.animate(
        selector,
        [
            {height: height + 'px', ease: 'ease-in-out', offset: 0},
            {height: 0, ease: 'ease-in-out', offset: 1},
        ],
        300,
        function () {
            context.clearAnimation(selector);
        }
    );
}

function useAnimation(context, expanded, mounted, height) {
    var animation = wx.createAnimation({
        duration: 0,
        timingFunction: 'ease-in-out',
    });
    if (expanded) {
        if (height === 0) {
            animation.height('auto').top(1).step();
        } else {
            animation
                .height(height)
                .top(1)
                .step({
                    duration: mounted ? 300 : 1,
                })
                .height('auto')
                .step();
        }
        context.setData({
            animation: animation.export(),
        });
        return;
    }
    animation.height(height).top(0).step({duration: 1}).height(0).step({
        duration: 300,
    });
    context.setData({
        animation: animation.export(),
    });
}

function setContentAnimate(context, expanded, mounted) {
    utils_1
        .getRect(context, '.van-collapse-item__content')
        .then(function (rect) {
            return rect.height;
        })
        .then(function (height) {
            version_1.canIUseAnimate()
                ? useAnimate(context, expanded, mounted, height)
                : useAnimation(context, expanded, mounted, height);
        });
}

exports.setContentAnimate = setContentAnimate;
